<?php
/**
 * @version 1.6
 * @author Misha Klomp
 * @editor Leander Molegraaf
 * 
 * deze file doet:
 * - verbinding maken met DB
 * - de actie tabel lezen/schrijven/updaten/deleten
 * 
 * hoe werkt dit:
 * - als je de constuctor aanroept met als input een versie ID dan worden alle atributen gevuld met deze info
 *     
 *     $test = new DbActie(15);
 *     
 *     if(!$test->getActieId()){
 *         echo "Niet gevonden.";
 *     } else {
 *         echo $test->getActieId();
 *     }
 * 
 */

require_once FILE_DB_DATABASE;
include_once FILE_DB_CONTROLE;

class DbActie extends Database{
    
    private $actie_id = '';
    private $inspectie_id = '';
    private $actie_punt = '';
    private $actie = '';
    private $actie_uitvoerende = '';
    private $actie_datum = '';
    
    public function __construct($actie_id = '') {
        if (DEBUG_LVL & DEBUG_LVL_CLASS) //echo __FILE__ . __LINE__ .': ' . __CLASS__ .'<BR/>';
        
        parent::__construct();
        // If Observatie id get versie data
        if (!empty ($actie_id)){
            
            $this->DbGetActieData($actie_id);
        }
        else {
            $this->reset();
        }
        //$this->actie_id = $actie_id;
        //$this->DbActie($this->actie_id);
    }
    
    /*public function DbActie($id= ''){

    }*/
    
    public function save ($inspectie_id, $actie_punt, $actie, $actie_uitvoerende, $actie_datum) {       
        $controle = new DbControle();
        //@TODO: checks fiksen en uncommenten. true verwijderen
        if (
            //$controle->checkId($inspectie_id) && 
            //$controle->checkId($actie_punt) && 
            //!empty ($actie) && 
            //$controle->checkString($actie_uitvoerende, 45, 1) && 
            //!empty ($actie_datum)
            true){
            
            $query = "INSERT INTO actie (inspectie_id, actie_punt, actie, actie_uitvoerende, actie_datum) 
                        VALUES ('" . mysql_real_escape_string($inspectie_id) . "',
                            '" . mysql_real_escape_string($actie_punt) . "',
                            '" . mysql_real_escape_string($actie) . "',
                            '" . mysql_real_escape_string($actie_uitvoerende) . "',
                            '" . mysql_real_escape_string($actie_datum) . "')";
//            echo "<pre>";
//            var_dump($query);
//            echo "</pre>";
            
            //if (DEBUG_LVL & DEBUG_LVL_QUERY)  //echo __FILE__ . ' ' . __LINE__ .': ' .$query . '<br />';

            if (!$this->dbquery($query)){
                return FALSE;
            }
            // Udate class attr

            $this->actie_id = mysql_insert_id();
            $this->inspectie_id = $inspectie_id;
            $this->actie_punt = $actie_punt;
            $this->actie = $actie;
            $this->actie_uitvoerende = $actie_uitvoerende;
            $this->actie_datum = $actie_datum;
            
            return TRUE;
        }
        else {
            echo("er werdt niet voldaan aan een van de voorwaarden!");
            return FALSE;
        }
    }
    
    public function update ($inspectie_id, $actie_punt, $actie, $actie_uitvoerende, $actie_datum){
        
        $controle = new DbControle();
        
        if (/*$controle->checkId($inspectie_id) && 
            $controle->checkId($actie_punt) && 
            !empty ($actie) && 
            $controle->checkString($actie_uitvoerende, 45, 1) && 
            !empty ($actie_datum)*/true){
            
            $query = "UPDATE actie 
                        SET inspectie_id = '" . mysql_real_escape_string($inspectie_id) . "', 
                            actie_punt = '" . mysql_real_escape_string($actie_punt) . "', 
                            actie = '" . mysql_real_escape_string($actie) . "', 
                            actie_uitvoerende = '" . mysql_real_escape_string($actie_uitvoerende) . "', 
                            actie_datum = '" . mysql_real_escape_string($actie_datum) . "' 
                        WHERE actie . actie_id ='" . mysql_real_escape_string($this->actie_id) . "'";
            
            if (!$this->dbquery($query)){
                return FALSE;
            }
            
            //if (DEBUG_LVL & DEBUG_LVL_QUERY)  echo __FILE__ . ' ' . __LINE__ .': ' .$query . '<br />';
            
            $this->inspectie_id = $inspectie_id;
            $this->actie_punt = $actie_punt;
            $this->actie = $actie;
            $this->actie_uitvoerende = $actie_uitvoerende;
            $this->actie_datum = $actie_datum;
            
            return TRUE;
        }
        else {
            return FALSE;
        }
    }
    
    public function delete(){
        
        $query = "DELETE FROM actie WHERE actie . actie_id = '" . mysql_real_escape_string($this->actie_id) . "'  LIMIT 1 ";
        
        if (!$this->dbquery($query)) {
                return FALSE;
            }

        if (DEBUG_LVL & DEBUG_LVL_QUERY)  echo __FILE__ . ' ' . __LINE__ .': ' .$query . '<br />';
        
        $this->reset();
    }

    public function getActieId(){
        
        return $this->actie_id;
    }
    
    public function getInspectieId(){
        
        return $this->inspectie_id;
    }
    
    public function getActiePunt(){
        
        return $this->actie_punt;
    }
    
    public function getActie(){
        
        return $this->actie;
    }
    
    public function getActieUitvoerende(){
        
        return $this->actie_uitvoerende;
    }
    
    public function getActieDatum(){
        
        return $this->actie_datum;
    }
    
    /**
     * Haalt een lijst op met actie_id's die bij de opgegeven inspectie_id horen
     * en laat deze door DbGetActieData vullen.
     * @author Leander Molegraaf
     * @param Int $inspectie_id
     * @return Array Alle actie-gegevens die bij de opgegeven inspectie horen
     */
    public function getInspectieActies($inspectie_id){
        //Haalt een lijst met Actie_id's uit de database die bij deze inspectie_id horen
        $query = mysql_query("SELECT actie_id FROM actie WHERE inspectie_id = " . mysql_real_escape_string($inspectie_id));
        $result = array();
        
        //voor elke actie...
        while($res = mysql_fetch_row($query)){
            //...vul je deze klasse met zijn informatie...
            $this->DbGetActieData($res[0]);
            
            //...en gebruik je die informatie om de return array aan te vullen
            $result[count($result)] = array("actie"=>$this->getActie(), "actieDatum"=>$this->getActieDatum(), "actieId"=>$this->getActieId(), "actiePunt"=>$this->getActiePunt(), "actieUitvoerende"=>$this->getActieUitvoerende());
        }
        
        if(count($result) == 0){
            return FALSE;
        }else{
            return $result;
        }
    }

    private function DbGetActieData($id){
        
        $query = mysql_query("SELECT * FROM actie WHERE actie_id = '" . mysql_real_escape_string($id) . "' LIMIT 1 ");
        if (!$res = mysql_fetch_object($query)){
            
            $this->reset();
            return FALSE;
        }
        
        $this->actie_id = $id;
        $this->inspectie_id = $res->inspectie_id;
        $this->actie_punt = $res->actie_punt;
        $this->actie = $res->actie;
        $this->actie_uitvoerende = $res->actie_uitvoerende;
        $this->actie_datum = $res->actie_datum;
        
        if (DEBUG_LVL & DEBUG_LVL_QUERY) echo __FILE__ . ' ' . __LINE__ .': ' .$query . '<br />';
    }
    
    private function reset(){
        
        $this->actie_id = '';
        $this->inspectie_id = '';
        $this->actie_punt = '';
        $this->actie = '';
        $this->actie_uitvoerende = '';
        $this->actie_datum = '';
    }


    public function __destruct() {
        parent::__destruct();
    }
}

class TestDbActie{
    public function TestDbActie(){
        $test = new DbActie;
        $test->save(1, 2, 'test', 'test2', '2011-05-21');
       
        echo 'actie ID: ' . $test->getActieId() . '<br />';

        echo 'inspectie ID: ' . $test->getInspectieId() . '<br />';

        echo 'actie punt: ' . $test->getActiePunt() . '<br />';

        echo 'actie: ' . $test->getActie() . '<br />';

        echo 'actie uitvoerende: ' . $test->getActieUitvoerende() . '<br />';

        echo 'actie datum: ' . $test->getActieDatum() . '<br />';
        
        $test->update(2, 3, 'test3', 'test4', '2011-06-24');
        
        echo 'actie ID: ' . $test->getActieId() . '<br />';

        echo 'inspectie ID: ' . $test->getInspectieId() . '<br />';

        echo 'actie punt: ' . $test->getActiePunt() . '<br />';

        echo 'actie: ' . $test->getActie() . '<br />';

        echo 'actie uitvoerende: ' . $test->getActieUitvoerende() . '<br />';

        echo 'actie datum: ' . $test->getActieDatum() . '<br />';
        
        $test->delete();
        
        
        echo 'actie ID: ' . $test->getActieId() . '<br />';

        echo 'inspectie ID: ' . $test->getInspectieId() . '<br />';

        echo 'actie punt: ' . $test->getActiePunt() . '<br />';

        echo 'actie: ' . $test->getActie() . '<br />';

        echo 'actie uitvoerende: ' . $test->getActieUitvoerende() . '<br />';

        echo 'actie datum: ' . $test->getActieDatum() . '<br />';
        
    }
}
?>